内容形状
contentShape
属性用于定义视图内容的交互区域或视觉边界形状。该形状可影响视图在点击、拖放、辅助功能、悬停等场景中的行为。常用于精确控制命中测试(hit-testing)区域或指定用于辅助功能和交互反馈的自定义轮廓。
这在如下场景中特别有用:
- 控制按钮或自定义视图的可点击区域;
- 定义拖放预览或上下文菜单的形状;
- 指定辅助功能的可聚焦区域;
- 优化鼠标悬停的交互体验。
定义
1contentShape?: Shape | {
2 kind: ContentShapeKinds
3 shape: Shape
4}
支持的写法
1. 简单形状(适用于所有用途)
直接传入一个 Shape
值,作为默认交互区域,用于所有情境(点击、辅助功能、拖放等)。
2. 按用途定义的指定形状
使用结构体形式设置指定类型的内容形状:
1{
2 kind: ContentShapeKinds
3 shape: Shape
4}
用于为特定交互类型(如 accessibility
、dragPreview
)设置不同的区域。
支持的 ContentShapeKinds
类型名称 |
用途说明 |
"interaction" |
命中测试区域(如点击、手势) |
"dragPreview" |
拖放操作中的预览形状 |
"contextMenuPreview" |
上下文菜单预览的形状 |
"hoverEffect" |
鼠标悬停交互区域(适用于连接鼠标的设备) |
"accessibility" |
辅助功能可聚焦区域,用于朗读、排序、高亮等辅助操作 |
示例
为所有交互设置默认形状
1<Button
2 title="点击我"
3 action={() => {}}
4 contentShape="capsule"
5/>
仅为辅助功能定义内容形状
1<Button
2 title="可访问按钮"
3 action={() => {}}
4 contentShape={{
5 kind: "accessibility",
6 shape: {
7 type: "rect",
8 cornerRadius: 12
9 }
10 }}
11/>
自定义点击区域为椭圆形
1<Text
2 contentShape={{
3 kind: "interaction",
4 shape: "ellipse"
5 }}
6>
7 自定义点击区域
8</Text>
注意事项
contentShape
不会影响视图的外观,只影响其交互行为;
- 如果使用自定义形状,建议确保其与视图的
frame
对齐合理;
- 对于只有图标的按钮或较小区域,设置合适的
contentShape
有助于提升点击命中率与可访问性。